package com.cyt.work.site.service;

import com.cyt.base.model.dto.ReturnResult;
import com.cyt.sys.model.po.SysUser;
import com.cyt.sys.service.BaseService;
import com.cyt.work.site.model.po.Notice;
import com.cyt.work.site.model.vo.NoticeVo;

import java.util.List;
import java.util.Map;

/**
 * 微官网-校园资讯Service层接口类
 *
 * @author rong yuan
 * @date 2019-7-8 15:17:40
 */
public interface NoticeService extends BaseService<Notice> {

    /**
     * 分页查询
     *
     * @param noticeVo 接受参数对象
     * @param pageNum  分页数
     * @param pageSize 每页显示条数
     * @return ReturnResult
     * @author rong yuan
     * @date 2019-7-8 15:17:40
     */
    ReturnResult page(NoticeVo noticeVo, int pageNum, int pageSize);

    /**
     * 添加或更新
     *
     * @param noticeVo 参数接受对象
     * @param sysUser  当前用户
     * @return ReturnResult
     * @author rong yuan
     * @date 2019-7-8 15:17:40
     */
    ReturnResult addOrUpdate(NoticeVo noticeVo, SysUser sysUser);

    /**
     * 根据条件逻辑删除
     *
     * @param noticeVo 参数接受对象
     * @param sysUser  当前用户
     * @return ReturnResult
     * @author rong yuan
     * @date 2019-7-8 15:17:40
     */
    ReturnResult remove(NoticeVo noticeVo, SysUser sysUser);

    /**
     * 根据条件物理删除
     *
     * @param noticeVo 参数接受对象
     * @param sysUser  当前用户
     * @return ReturnResult
     * @author rong yuan
     * @date 2019-7-8 15:17:40
     */
    ReturnResult delete(NoticeVo noticeVo, SysUser sysUser);

    /**
     * 发布/取消发布
     *
     * @param noticeVo 参数接受对象
     * @param sysUser  当前用户
     * @return ReturnResult
     * @author rong yuan
     * @date 2019-7-8 15:17:40
     */
    ReturnResult updateStatus(NoticeVo noticeVo, SysUser sysUser);

    /**
     * list查询
     *
     * @param noticeVo 参数接受对象
     * @return List<NoticeVo>
     * @author rong yuan
     * @date 2019-7-8 15:17:40
     */
    List<NoticeVo> list(NoticeVo noticeVo);

    /**
     * 校园资讯分类查询
     *
     * @param noticeVo 参数接受对象
     * @return List<Map>
     * @author rong yuan
     * @date 2019-7-8 15:17:40
     */
    List<Map> noticeCategory(NoticeVo noticeVo);

    /**
     * list查询
     *
     * @param noticeVo 接受参数对象
     * @return List<Notice>
     * @author rong yuan
     * @date 2019-08-21 11:22
     */
    List<Notice> listByExample(NoticeVo noticeVo);

    /**
     * 校园资讯统计
     *
     * @param noticeVo 接受参数对象
     * @return ReturnResult
     * @author rong yuan
     * @date 2019-7-8 15:17:40
     */
    ReturnResult statisticsByType(NoticeVo noticeVo);
}